package com.kotlin.user.ui.activity

import android.os.Bundle
import android.widget.Toast
import com.kotlin.library.common.AppManager
import com.kotlin.library.ext.onClick
import com.kotlin.library.ui.activity.BaseMvpActivity
import com.kotlin.user.R
import com.kotlin.user.injection.component.DaggerUserComponent
import com.kotlin.user.injection.module.UserCenterModule
import com.kotlin.user.presenter.RegisterPresenter
import com.kotlin.user.presenter.view.RegisterView
import kotlinx.android.synthetic.main.activity_register.*

/**
 * dagger2 用法
 * 1.通过@inject 注解 在类的构造方法上,和实例属性上 ,通过component进行关联
 * 2.如果当实例是一个接口或者是抽象类,需要通过module的方法,创建module类,类上指定@module注解,类里面的方法用@provides注解修饰,返回当前类的实例(可以有多个provides方法)
 * 通过compone接口上的@compon(module = arryof(module实例) 里面的方法执行要在那个类中使用该类实例
 * 3.依赖注入 首先会找有没有module的实例,如果有,就会找module里面参数的实例(所有实现类也需要用@inject修饰构造方法),如果没有就会直接找@inject修饰的实例属性
 */

class RegisterActivity : BaseMvpActivity<RegisterPresenter>(), RegisterView {

    var pressTime: Long = 0L

    override fun onRegisterView(result: String?) {

        Toast.makeText(this, result, Toast.LENGTH_LONG).show()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_register)
        mRegisterBtn.onClick {
            mPresenter.register(mMobile.text.toString(), mVerifyCode.text.toString(), mPwd.text.toString())
        }
    }

    override fun initInject() {
        DaggerUserComponent.builder().activityComponent(activityComponent).userCenterModule(UserCenterModule()).build()
            .inject(this)
        mPresenter.mView = this
    }

    /**
     * 双击退出
     */
    override fun onBackPressed() {
        var time = System.currentTimeMillis()
        if (time - pressTime > 2000) {
            Toast.makeText(this, "请再次点击退出", Toast.LENGTH_LONG).show()
            pressTime = time
        } else {
            AppManager.instance.exitApp(this)
        }
    }

}
